#!/bin/bash
#
# Copyright 2015-2017 Adrian DC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# === Standalone Source Helper ===
# source <(curl -Ls https://github.com/AdrianDC/android_development_shell_tools/raw/master/android_git_tools.rc)

# === Git Project Remote ===
function gitgetremote()
{
  # Usage: gitgetremote [branch_grep] (Get git primary remote)

  # Variables
  local remote;
  local remotes;

  # Remotes detection
  remotes=$(git 'for-each-ref' \
         | grep -i 'remotes' \
         | grep -i "${1}" \
         | sed 's/.*\/remotes\/\([^\/]*\).*/\1/');

  # Validate remotes
  for remote in ${remotes}; do
    if git remote -v | cut -f 1 | grep -q "${remote}"; then
      break;
    fi;
  done;

  # Fix remote for AOSP
  if ! git ls-remote --exit-code "${remote}" > /dev/null 2>&1 &&
      git ls-remote --exit-code "aosp" > /dev/null 2>&1; then
    remote='aosp';
  fi;

  # Output result
  echo "${remote}";
}

# === Git Project Branch ===
function gitgetbranch()
{
  # Usage: gitgetbranch (Get git primary branch)

  # Variables
  local branch;
  local branches;

  # Remotes detection
  branches=$(git 'for-each-ref' \
           | grep -i 'remotes' \
           | grep -v 'HEAD' \
           | sed 's/.*\/remotes\/\([^\/]*\/[^\/]*\).*/\1/');

  # Validate remotes
  for branch in ${branches}; do
    if git remote -v | cut -f 1 | grep -q "${branch%/*}"; then
      branch=${branch#*/};
      break;
    fi;
    branch='';
  done;

  # Output result
  echo "${branch}";
}
